
/**
 * Created by ZYY on 2016/12/7.
 */
$(function () {
    /*
    * 机器人消息表格数据处理
    * */
    /*获得json数据*/
	var pages;//总页数
	var data = [];
	var curData = [];
    $.ajax({
        type: "post",
        url: "/backjson/getJson?method=1",
        dataType: "json",
        success: function(data1) {
        	data = data1;
        	showTable(sortId, 1, 0, data);
        }
    });
    function sortId(a,b){
        return a.uid-b.uid;
    }
    //根据消息内容排序
    function sortMessage(x,y){
        return x.text.localeCompare(y.text);
    }
    //根据行为排序
    function sortAction(m,n) {
        return m.service.localeCompare(n.service);
    }
   
    //页面表格数据显示，参数，1：排序方法 2：当前页码 3：加数 4：json数据
    var all_article_page;// 定义一个页码，记录所有当前页码
    function showTable(method,nowpage,addpage,data) {
    	curData = data;
        $("#page ul").empty();   //清空页码ul列表
        all_article_page = nowpage + addpage ;// 获得当前页面的页码
        var flag = data.length;
        //分页
        var main_pages = Math.ceil(flag/10);//总页数
        pages = main_pages;
        //判断调用此方法时传来的页数
        if(all_article_page <= main_pages && all_article_page > 0){ //页数大于0小于等于最多页数
            all_article_page = nowpage + addpage;
        }else {
            all_article_page = nowpage;  //否则页码不变
        }
        //根据页码，给列表元素数组定下 循环显示的开始值和结束值
        var start = (all_article_page-1) * 10;
        var end = all_article_page * 10;
       
        if(end >= flag){
            end = flag;
        }
        var newdata = data;
        //获得排序后的json数据
        newdata.sort(method);
        //从json中循环取出数据，DOM操作写入页面
        $("#table_view table tbody").empty();
        for(var i = start; i < end; i++){
            var num = i+1;
            //编写表格dom
            var str = '<tr><td>'+num+'</td><td>'+newdata[i].uid+'</td><td>'+newdata[i].text+'</td><td>'+newdata[i].service+'</td></tr>';
            //插入页面表格中
            $("#table_view table tbody").append(str);
        }
        
    }
    var ms = {
    		init: function(obj, args) {
    			return(function() {
    				ms.fillHtml(obj, args);
    				ms.bindEvent(obj, args);
    			})();
    		},
    		//填充html
    		fillHtml: function(obj, args) {
    			return(function() {
    				obj.empty();
    				//上一页
    				if(args.current > 1) {
    					obj.append('<a href="javascript:;" class="prevPage">上一页</a>');
    				} else {
    					obj.remove('.prevPage');
    					obj.append('<span class="disabled">上一页</span>');
    				}
    				//中间页码
    				if(args.current != 1 && args.current >= 4 && args.pageCount != 4) {
    					obj.append('<a href="javascript:;" class="tcdNumber">' + 1 + '</a>');
    				}
    				if(args.current - 2 > 2 && args.current <= args.pageCount && args.pageCount > 5) {
    					obj.append('<span>...</span>');
    				}
    				var start = args.current - 2,
    					end = args.current + 2;
    				if((start > 1 && args.current < 4) || args.current == 1) {
    					end++;
    				}
    				if(args.current > args.pageCount - 4 && args.current >= args.pageCount) {
    					start--;
    				}
    				for(; start <= end; start++) {
    					if(start <= args.pageCount && start >= 1) {
    						if(start != args.current) {
    							obj.append('<a href="javascript:;" class="tcdNumber">' + start + '</a>');
    						} else {
    							obj.append('<span class="current">' + start + '</span>');
    						}
    					}
    				}
    				if(args.current + 2 < args.pageCount - 1 && args.current >= 1 && args.pageCount > 5) {
    					obj.append('<span>...</span>');
    				}
    				if(args.current != args.pageCount && args.current < args.pageCount - 2 && args.pageCount != 4) {
    					obj.append('<a href="javascript:;" class="tcdNumber">' + args.pageCount + '</a>');
    				}
    				//下一页
    				if(args.current < args.pageCount) {
    					obj.append('<a href="javascript:;" class="nextPage">下一页</a>');
    				} else {
    					obj.remove('.nextPage');
    					obj.append('<span class="disabled">下一页</span>');
    				}
    			})();
    		},
    		//绑定事件
    		bindEvent: function(obj, args) {
    			return(function() {
    				obj.unbind();   //清除所有绑定的事件
    				obj.on("click", "a.tcdNumber", function() {
    					var current = parseInt($(this).text());
    					ms.fillHtml(obj, {
    						"current": current,
    						"pageCount": args.pageCount
    					});
    					if(typeof(args.backFn) == "function") {
    						args.backFn(current);
    						showTable(sortId, current, 0, curData);
    					}
    				});
    				//上一页
    				obj.on("click", "a.prevPage", function() {
    					var current = parseInt(obj.children("span.current").text());
    					ms.fillHtml(obj, {
    						"current": current - 1,
    						"pageCount": args.pageCount
    					});
    					if(typeof(args.backFn) == "function") {
    						args.backFn(current - 1);
    						showTable(sortId, current-1, 0, curData);
    					}
    				});
    				//下一页
    				obj.on("click", "a.nextPage", function() {
    					var current = parseInt(obj.children("span.current").text());
    					ms.fillHtml(obj, {
    						"current": current + 1,
    						"pageCount": args.pageCount
    					});
    					if(typeof(args.backFn) == "function") {
    						args.backFn(current + 1);
    						showTable(sortId, current+1, 0, curData);
    					}
    				});
    			})();
    		}
    	}
    	$.fn.createPage = function(options) {
    			var args = $.extend({
    				pageCount: 15,
    				current: 1,
    				backFn: function() {}
    			}, options);
    			ms.init(this, args);
    		}
    //下拉框变化监听事件
    $("#sortType").change(function () {
        var sortType = $("#sortType").val();
        switch(sortType){
            case "编号":window.location.reload();//刷新当前页面.
                break;
            case "消息内容":showTable(sortMessage,1,0,data);doPage(pages);
                break;
            case "行为":showTable(sortAction,1,0,data);doPage(pages);
                break;
        }
    });
    //刷新按钮点击事件
    $("#content #table_view #table_center #tb_menu .refresh button").click(function () {
    	window.location.reload();//刷新当前页面.
    });
    //模糊搜索点击事件
    $("#search button").click(function () {
        var keyWords = $("#search input").val();
        if(keyWords != null && keyWords !=""){
            searchByWords(keyWords);
        }
    });
    //模糊查询方法，主要方法是判断字符串是否出现在已有数据中
    function searchByWords(keyWords) {
        $("#table_view table tbody").empty();
        var newdata = new Array();
        for(var i=0; i<data.length; i++){
        	//匹配字符串
            if (data[i].uid.toString().indexOf(keyWords) >= 0){
                newdata.push(data[i]);
            }else if (data[i].text.toString().indexOf(keyWords) >= 0){
            	newdata.push(data[i]);
            }else if(data[i].service.toString().indexOf(keyWords) >= 0){
            	newdata.push(data[i]);
            }else{
            	
            }
        }
        showTable(sortId,1,0,newdata);
        doPage(pages);
        
    }
  //延时操作，获得页码
	setTimeout(function(){
		doPage(pages);
	},1000);
	function doPage(pages){
	//调用分页代码
	$(".tcdPageCode").createPage({
		pageCount: pages,
		current: 1,
		backFn: function(p) {}
	});
	}

})